lawless/client/assets/scripts/GameManager.ts
徐勤民 521603a899
一些检测仍在等待运行
Docs Build / build-and-deploy (push) Waiting to run
refactor(client): 删除游戏核心管理器和场景脚本
- 移除 ConfigManager 配置管理器类
- 移除 GameManager 全局单例管理器类
- 移除 NetworkManager 网络连接管理器类
- 移除 CharacterData 和 ItemData 数据模型类
- 移除 BagScene、BattleScene、LobbyScene 等场景脚本
- 移除 EncounterBubble 和 EventFeedPanel UI组件脚本
- 更新代理邀请文档中的服务器连接方式
- 更新同步状态表格中的代理任务分配信息
- 添加 MiMo 任务完成总结和审查修复记录
2026-07-03 21:34:51 +08:00

260 行
6.8 KiB
TypeScript

import { _decorator, Component, Node, director, game } from 'cc';
import { UITheme } from './ui/common/UITheme';
import { CharacterData, RaceType, ProfessionType, RealmLevel, SubRealm } from './data/GameData';
const { ccclass, property } = _decorator;
/**
* 游戏主管理器
* 管理游戏状态、界面切换、数据流
*/
@ccclass('GameManager')
export class GameManager extends Component {
private static _instance: GameManager = null!;
static get instance(): GameManager {
return this._instance;
}
@property(Node) mainUI: Node = null!;
@property(Node) loadingScreen: Node = null!;
// 当前角色数据
private _currentCharacter: CharacterData = null!;
get currentCharacter(): CharacterData {
return this._currentCharacter;
}
// 当前界面索引
private _currentScreen: number = 0;
get currentScreen(): number {
return this._currentScreen;
}
// 界面名称
private _screenNames: string[] = ['吐纳', '门派', '武学', '江湖', '游历'];
onLoad() {
if (GameManager._instance && GameManager._instance !== this) {
this.node.destroy();
return;
}
GameManager._instance = this;
director.addPersistRootNode(this.node);
this.initGame();
}
/**
* 初始化游戏
*/
private initGame() {
// 创建默认角色数据
this._currentCharacter = this.createDefaultCharacter();
// 加载本地存储
this.loadLocalData();
console.log('GameManager initialized');
}
/**
* 创建默认角色
*/
private createDefaultCharacter(): CharacterData {
return {
id: 'player_001',
name: '无名侠客',
race: RaceType.HUMAN,
profession: ProfessionType.SWORD_CULTIVATOR,
level: 1,
realm: RealmLevel.QI_REFINING,
subRealm: SubRealm.EARLY,
// 基础属性
strength: 10,
constitution: 10,
wisdom: 10,
speed: 10,
agility: 10,
luck: 10,
// 资源
copper: 1000,
spiritStones: 0,
internalForce: 0,
energy: 100,
maxEnergy: 100,
purity: 100,
// 状态
hp: 100,
maxHp: 100,
san: 100,
alignment: 0,
factionReputation: 0,
// 时间
createdAt: Date.now(),
lastLoginAt: Date.now(),
totalPlayTime: 0,
};
}
/**
* 切换界面
*/
switchScreen(screenIndex: number) {
if (screenIndex < 0 || screenIndex >= this._screenNames.length) return;
if (screenIndex === this._currentScreen) return;
const oldScreen = this._currentScreen;
this._currentScreen = screenIndex;
// 通知UI更新
this.onScreenChanged(oldScreen, screenIndex);
}
/**
* 界面切换回调
*/
protected onScreenChanged(oldIndex: number, newIndex: number) {
console.log(`Screen changed: ${this._screenNames[oldIndex]} -> ${this._screenNames[newIndex]}`);
// 子类或外部监听器处理具体切换逻辑
}
/**
* 获取当前界面名称
*/
getCurrentScreenName(): string {
return this._screenNames[this._currentScreen];
}
/**
* 更新角色属性
*/
updateCharacterStats(updates: Partial<CharacterData>) {
Object.assign(this._currentCharacter, updates);
this.onCharacterUpdated();
}
/**
* 角色数据更新回调
*/
protected onCharacterUpdated() {
// 保存本地数据
this.saveLocalData();
}
/**
* 添加铜钱
*/
addCopper(amount: number) {
this._currentCharacter.copper += amount;
this.onCharacterUpdated();
}
/**
* 消耗能量
*/
consumeEnergy(amount: number): boolean {
if (this._currentCharacter.energy < amount) {
return false;
}
this._currentCharacter.energy -= amount;
this.onCharacterUpdated();
return true;
}
/**
* 恢复能量
*/
restoreEnergy(amount: number) {
this._currentCharacter.energy = Math.min(
this._currentCharacter.energy + amount,
this._currentCharacter.maxEnergy
);
this.onCharacterUpdated();
}
/**
* 保存本地数据
*/
private saveLocalData() {
try {
const data = JSON.stringify(this._currentCharacter);
localStorage.setItem('character_data', data);
} catch (e) {
console.error('Failed to save character data:', e);
}
}
/**
* 加载本地数据
*/
private loadLocalData() {
try {
const data = localStorage.getItem('character_data');
if (data) {
this._currentCharacter = JSON.parse(data);
this._currentCharacter.lastLoginAt = Date.now();
}
} catch (e) {
console.error('Failed to load character data:', e);
}
}
/**
* 获取境界名称
*/
getRealmName(realm: RealmLevel): string {
const names: { [key: number]: string } = {
[RealmLevel.QI_REFINING]: '炼气期',
[RealmLevel.FOUNDATION]: '筑基期',
[RealmLevel.GOLDEN_CORE]: '金丹期',
[RealmLevel.NASCENT_SOUL]: '元婴期',
[RealmLevel.SPIRIT_SEVERING]: '化神期',
[RealmLevel.BODY_INTEGRATION]: '合体期',
[RealmLevel.MAHAYANA]: '大乘期',
[RealmLevel.TRIBULATION]: '渡劫期',
[RealmLevel.ASCENSION]: '飞升',
};
return names[realm] || '未知';
}
/**
* 获取种族名称
*/
getRaceName(race: RaceType): string {
const names: { [key: string]: string } = {
[RaceType.HUMAN]: '人族',
[RaceType.ELF]: '精灵',
[RaceType.DWARF]: '矮人',
[RaceType.ORC]: '兽人',
[RaceType.GOBLIN]: '地精',
[RaceType.DRAGONBORN]: '龙裔',
[RaceType.UNDEAD]: '亡灵',
[RaceType.DEMON]: '魔族',
[RaceType.ANGEL]: '神族',
[RaceType.TITAN]: '巨人',
[RaceType.WEREWOLF]: '狼人',
[RaceType.VAMPIRE]: '吸血鬼',
[RaceType.NEPHILIM]: '深潜裔',
[RaceType.CELESTIAL]: '天人',
[RaceType.SPIRIT]: '精魂',
[RaceType.FLAME]: '火裔',
[RaceType.FROST]: '冰裔',
[RaceType.THUNDER]: '雷裔',
[RaceType.EARTH]: '土裔',
};
return names[race] || '未知';
}
onDestroy() {
if (GameManager._instance === this) {
GameManager._instance = null!;
}
}
}